/** 
 * @file MEntera.java
 * 
 * @author Luis Ernesto Carrera Retana
 * @date 2009-11-29
 */

package estadistec.logica.tabla;

import estadistec.logica.tipos.TipoValor;

import estadistec.excepciones.ExcepcionFormatoNumeros;
import estadistec.excepciones.ExcepcionMetodoInexistente;

/** 
 * Clase para las medidas de tipo Entero.
 **/
public class MEntera extends Medida<Integer> {

	/** 
	 * Constructor. 
	 */
	public MEntera (String nombre, LTabla padre, Long llave) {
		this._valor = null;
		this._lTabla = padre;
		this._llave = llave;
		this.setNombre(nombre);
	}
	
	public void setValor (Integer valor) {
		this._valor = new Integer(valor);
	}

	/** 
	 * @see estadistec.logica.tipos.Valores#getTipo
	 */
	public TipoValor getTipo() {
		return TipoValor.ENTERO;
	}

	/** 
	 * @see estadistec.logica.tipos.Valores#setNoDecimales
	 */
	public void setNoDecimales (int n)  {
		throw new ExcepcionMetodoInexistente("Enteros -> setNoDecimales");
	}

	/** 
	 * @see estadistec.logica.tipos.Valores#getNoDecimales
	 */
	public int getNoDecimales ()  {
		throw new ExcepcionMetodoInexistente("Enteros -> getNoDecimales");
	}

	protected Integer _obtenerValor (String texto) {
		return obtenerValor(texto);
	}

	protected String _obtenerTexto (Integer valor) {
		return obtenerTexto(valor);
	}

	/** 
	 * Método que convierte de un String que representa un entero
	 * a un valor de tipo Integer. Utiliza el constructor de \c Integer
	 * y atrapa la excepción de \c NumberFormatException, para lanzar
	 * \c ExcepcionFormatoNumeros.
	 * 
	 * @param texto String que representa al posible valor.
	 *
	 * @throws ExepcionFormatoValor En caso de que java no pueda
	 * convertir a un entero.
	 */
	static public Integer obtenerValor (String texto)  
		throws ExcepcionFormatoNumeros
	{
		Integer valor;
		try {
			valor = new Integer(texto);
		} catch (NumberFormatException e) {
			throw new ExcepcionFormatoNumeros("Se esperaba un entero: " + texto);
		}
		return valor;
	}

	/** 
	 * Convierte un valor de tipo Integer a un string.
	 */
	static public String obtenerTexto(Integer valor) 
	{
		return valor.toString();
	}

}
